package com.insight.common.enums;

import lombok.Getter;

/**
 * T014: 连接状态枚举
 * 表示数据源连接的健康状态
 */
@Getter
public enum ConnectionStatus {

    /**
     * 连接激活（正常）
     */
    ACTIVE("Active", "连接正常", "#28a745"),

    /**
     * 连接未激活（禁用）
     */
    INACTIVE("Inactive", "连接已禁用", "#6c757d"),

    /**
     * 连接错误（异常）
     */
    ERROR("Error", "连接异常", "#dc3545");

    /**
     * 英文名称
     */
    private final String code;

    /**
     * 中文描述
     */
    private final String description;

    /**
     * 状态颜色（用于UI显示）
     */
    private final String color;

    ConnectionStatus(String code, String description, String color) {
        this.code = code;
        this.description = description;
        this.color = color;
    }

    /**
     * 根据代码获取连接状态
     *
     * @param code 状态代码
     * @return 连接状态枚举
     * @throws IllegalArgumentException 如果代码不匹配任何状态
     */
    public static ConnectionStatus fromCode(String code) {
        for (ConnectionStatus status : values()) {
            if (status.code.equalsIgnoreCase(code)) {
                return status;
            }
        }
        throw new IllegalArgumentException("Unknown connection status code: " + code);
    }

    /**
     * 判断是否为健康状态
     *
     * @return true 如果状态为 ACTIVE
     */
    public boolean isHealthy() {
        return this == ACTIVE;
    }

    /**
     * 判断是否为错误状态
     *
     * @return true 如果状态为 ERROR
     */
    public boolean isError() {
        return this == ERROR;
    }
}
